import Vue from 'vue'
import Vuex from 'vuex'
import router from '../router'

Vue.use(Vuex)
Vue.use(router)

export default new Vuex.Store({
  state: {
    username: '',
    tabsPage: [{ title: '首页', route: '/home', flag: false }],
    TabsValue: 'home'
  },
  actions: {
    changUsername (ctx, name) {
      ctx.commit('changUsername', name)
    },
    editableTabs (ctx, obj) {
      ctx.commit('editableTabs', obj)
    }
  },
  mutations: {
    changUsername (state, name) {
      state.username = name
    },
    editableTabs: (state, obj) => {
      let arr = Array.from(state.tabsPage)
      // 数组内不为空
      if (arr.length !== 0) {
        // 使用 Array.some 去判断是否存在对象信息
        var even = function (res) {
          return arr.some(item => {
            return item.route === res.route
          })
        }
        // 自定义的even方法：如果对象存在返回true,不存在则返回flase
        if (!even(obj)) {
          // 如果不存在，做添加数据、选中以及跳转操作
          arr.push({
            title: obj.name, route: obj.route, flag: true
          })
          state.tabsPage = arr
          state.TabsValue = obj.route
          router.push({ name: obj.route })
        } else {
          // 如果存在，只做跳转选中
          state.TabsValue = obj.route
          router.push({ name: obj.route })
        };
        // 如果为空
      } else {
        arr.push({
          title: obj.name, route: obj.route, flag: true
        })
        state.tabsPage = arr
        state.TabsValue = obj.route
        router.push({ name: obj.route })
      }
    }
  }
})
